package com.dingding.facade.user.service;

import java.util.List;

import com.dingding.common.core.base.dto.DubboInvokResponseDTO;
import com.dingding.common.core.beans.UserCoupon;
import com.dingding.common.core.beans.UserLogin;
import com.dingding.common.core.beans.Userdetail;
import com.dingding.facade.user.dto.evaluate.GetDriverInfoDTO;
import com.dingding.facade.user.dto.usercoupon.ResCoupon;

/**
 * @ClassName: IUserInfoFacade
 * @Description:用户信息操作接口
 * @author zhouxuan
 * @date 2016年4月12日 下午4:15:01
 */

public interface IUserInfoFacade {

	/**
	 * @Title: getUserCouponNumber
	 * @Description: 获取用户优惠券数目
	 * @param userId
	 *            用户id
	 * @author zhouxuan
	 */
	public int getUserCouponNumber(String userId);

	/**
	 * @Title: setUserCouponNumber
	 * @Description:设置用户优惠券数目
	 * @param @param
	 *            userId 用户id
	 * @param @param
	 *            couponNumber 优惠券数目
	 * @author zhouxuan
	 */

	public boolean setUserCouponNumber(String userId, int couponNumber);

	/**
	 * @Description: 通过电话号码验证用户是否已经注册
	 * @param tellphone
	 * @author fengshuonan
	 * @return true 用户已经注册 false 用户未注册
	 */
	public boolean userIsRegedByPhone(String tellphone);

	/**
	 * @Title: setUserCouponNumber
	 * @Description: 减少一张用户优惠券数量
	 * @param userId 用户id
	 * @author zhouxuan
	 */
	public boolean updateUserCouponNumber(String userId);

	/**
	 * @Title: setUserCouponNumber
	 * @Description: 增加一张用户优惠券
	 * @param @param
	 *            userId 用户id
	 * @author zhouxuan
	 */

	public boolean addUserCoupon(String userId);
	
	/**
	 * @Description: 添加用户
	 * @param tellPhone
	 *            电话号码
	 * @param weChatId
	 *            微信openId
	 * @author fengshuonan
	 * @return boolean true 添加成功 false 添加失败
	 */
	public boolean addUser(String tellPhone, String weChatId);

	/**
	 * 
	 * 订单完成后，乘客评价页面需要显示车主信息及部分订单信息，当前接口由此产生
	 * 
	 * 由于当前接口所需要的车主信息需要依赖顶大信息所以获取订单信息也在此接口完成
	 * 
	 * @Title: getDriverInfo_And_OrderInfo
	 * @param orderId 订单ID
	 * @param registrationType 订单类型 1:私家车 2:出租车
	 * @author CHEHUANBO
	 * @return BaseQueryResponseDTO 信息传输响应信息封装DTO
	 * 
	 */
	public DubboInvokResponseDTO<GetDriverInfoDTO> getDriverInfo_And_OrderInfo(String orderId,Integer registrationType);

	/**
	 * @Title: getUserCouponList
	 * @Description:获取用户优惠券列表
	 * @author zhouxuan
	 * @return List<UserCoupon>
	 */
	public List<UserCoupon> getUserCouponList(String userId);
	
	/**
	 * 
	 * @Title: getUserDetail 
	 * @Description: 根据用户Id获取用户详情
	 * @param userId 用户Id
	 * @author YHQ 
	 * @return Userdetail  用户详情
	 */
	public Userdetail getUserDetail(String userId);
	
	/**
	 * 
	 * @Title: updateUserDetail 
	 * @Description: 更新用户详情
	 * @param userdetail 用户详情对象
	 * @author YHQ 
	 * @since V2.3.0
	 * @return boolean    返回类型
	 * 
	 */
	public boolean updateUserDetail(Userdetail userdetail);
	
	/**
	 * 
	 * @Title: getResCoupon 
	 * @Description: 根据优惠券Id获取搭乘时要使用的优惠券信息
	 * @param userId 用户Id
	 * @author YHQ 
	 * @return ResCoupon  优惠券信息
	 * 
	 */
	public ResCoupon getResCoupon(String userId);
	
	/**
	 * 
	 * @Title: getResCoupon 
	 * @Description: 根据用户Id获取搭乘时要使用的优惠券信息
	 * @param userId 用户Id
	 * @author YHQ 
	 * @return UserCoupon  优惠券信息
	 * 
	 */
	public UserCoupon getUserCoupon(String userId);
	
	/**
	 * 
	 * @Title: updateUserCoupon 
	 * @Description: 修改用户优惠券信息 
	 * @param ucId 用户优惠券Id
	 * @author YHQ 
	 * @return boolean true:修改成功   false:修改失败
	 * 
	 */
	public boolean updateUserCoupon(String ucId);
	
	/**
	 * @Description:
	 * @param tellphone
	 * @return
	 * @author fengshuonan
	 * @return String
	 * @since 2.4
	 */
	public UserLogin addUser(String tellphone);
	
	
	/**
	 * @Description:通过微信添加用户
	 * @author fengshuonan
	 * @since 2.4
	 */
	public UserLogin addUserByWechat(String tellphone,String wechatId);
	
}
